diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/PartType.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/PartType.java index aadbcb1e..b1c492d6 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/PartType.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/PartType.java @@ -27,9 +27,9 @@ public class PartType extends BaseEntity /** 类型ID */ private Long id; - /** 类型名称 */ - @Excel(name = "名称") - @ApiModelProperty(value = "类型名称") + /** 规格型号 */ + @Excel(name = "规格型号") + @ApiModelProperty(value = "规格型号") @NotBlank(message = "名称不能为空") @Size(max=30, message = "名称长度不能超过30") private String paName; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/vo/MaTypeVo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/vo/MaTypeVo.java index b7913fc1..17859d96 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/vo/MaTypeVo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/vo/MaTypeVo.java @@ -22,7 +22,7 @@ public class MaTypeVo extends Type { private String itemType; @Excel(name = "物资类型") - @ApiModelProperty(value = "施工类型") + @ApiModelProperty(value = "物资类型") private String materialType; @Excel(name = "物资名称") diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/vo/PartTypeVo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/vo/PartTypeVo.java new file mode 100644 index 00000000..43311725 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/domain/vo/PartTypeVo.java @@ -0,0 +1,19 @@ +package com.bonus.material.ma.domain.vo; + +import com.bonus.common.core.annotation.Excel; +import com.bonus.material.ma.domain.PartType; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class PartTypeVo extends PartType { + + @Excel(name = "配件类型") + @ApiModelProperty(value = "配件类型") + private String partType; + + @Excel(name = "配件名称") + @ApiModelProperty(value = "配件名称") + private String partName; + +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/TypeMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/TypeMapper.java index e9e4b029..ba21ca7f 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/TypeMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/mapper/TypeMapper.java @@ -127,7 +127,7 @@ public interface TypeMapper { */ int logicDeleteTypeByTypeIds(Long[] typeIds); - Type queryByName(String typeName); + Type queryByNameAndParentId(@Param("typeName") String typeName, @Param("parentId") Long parentId); /** * 根据ID查询 diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/TypeServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/TypeServiceImpl.java index d7b3cbfb..f442b6f3 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/TypeServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/ma/service/impl/TypeServiceImpl.java @@ -290,8 +290,8 @@ public class TypeServiceImpl implements ITypeService { @Override public int insertType(Type type) { //根据类型名称判断,去重 - Type maType = typeMapper.queryByName(type.getTypeName()); - if (maType != null && maType.getParentId().equals(type.getParentId())) { + Type maType = typeMapper.queryByNameAndParentId(type.getTypeName(), type.getParentId()); + if (maType != null) { throw new RuntimeException("同级下类型名称存在重复!"); } type.setLevel(String.valueOf(Integer.parseInt(type.getLevel()) + 1)); @@ -318,8 +318,8 @@ public class TypeServiceImpl implements ITypeService { @Override public int updateType(Type type) { //根据类型名称判断,去重 - Type maType = typeMapper.queryByName(type.getTypeName()); - if (maType != null && !maType.getTypeId().equals(type.getTypeId()) && maType.getParentId().equals(type.getParentId())) { + Type maType = typeMapper.queryByNameAndParentId(type.getTypeName(), type.getParentId()); + if (maType != null && !maType.getTypeId().equals(type.getTypeId())) { throw new RuntimeException("同级下类型名称存在重复!"); } type.setUpdateTime(DateUtils.getNowDate()); diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckInfo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckInfo.java index 76f72edf..9bd53852 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckInfo.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/domain/PurchaseCheckInfo.java @@ -57,6 +57,16 @@ public class PurchaseCheckInfo extends BaseEntity { @ApiModelProperty(value = "采购员") private Long purchaser; + /** 物资厂家id */ + @Excel(name = "物资厂家id") + @ApiModelProperty(value = "物资厂家id") + private Long supplierId; + + /** 物资厂家名称 */ + @Excel(name = "物资厂家名称") + @ApiModelProperty(value = "物资厂家名称") + private String supplier; + /** 数据所属组织 */ @Excel(name = "数据所属组织") @ApiModelProperty(value = "数据所属组织") diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseCheckDetailsMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseCheckDetailsMapper.java index 8d72eadc..62c4a007 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseCheckDetailsMapper.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/mapper/PurchaseCheckDetailsMapper.java @@ -88,6 +88,8 @@ public interface PurchaseCheckDetailsMapper { */ int deletePurchaseCheckDetailsById(Long id); + int deletePurchaseCheckDetailsByParentIds(Long[] ids); + /** * 批量删除新购验收任务详细 * diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java index 4e9c7c34..ff9a259f 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseCheckInfoServiceImpl.java @@ -30,8 +30,7 @@ import com.bonus.material.purchase.mapper.PurchaseCheckInfoMapper; import com.bonus.material.purchase.domain.PurchaseCheckInfo; import com.bonus.material.purchase.service.IPurchaseCheckInfoService; import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.TransactionStatus; -import org.springframework.transaction.support.DefaultTransactionDefinition; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -154,7 +153,8 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { */ public static BigDecimal calculateTaxPrice(BigDecimal purchaseNoTaxPrice, BigDecimal taxRate) { BigDecimal one = BigDecimal.ONE; - return purchaseNoTaxPrice.multiply(one.add(taxRate)).setScale(2, RoundingMode.HALF_UP); + BigDecimal divisor = BigDecimal.valueOf(100); + return purchaseNoTaxPrice.multiply(one.add(taxRate.divide(divisor))).setScale(2, RoundingMode.HALF_UP); } /** @@ -164,10 +164,10 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { * @return 结果 */ @Override + @Transactional public AjaxResult insertPurchaseCheckInfo(PurchaseCheckDto purchaseCheckInfo) { - // 赋值创建时间 purchaseCheckInfo.getPurchaseCheckInfo().setCreateTime(DateUtils.getNowDate()); - purchaseCheckInfo.getPurchaseCheckInfo().setCreateBy(SecurityUtils.getLoginUser().getUsername()); + purchaseCheckInfo.getPurchaseCheckInfo().setCreateBy(SecurityUtils.getUsername()); try { // 查询新购任务当月最大单号 Integer thisMonthMaxOrder = tmTaskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), Long.valueOf(PurchaseTaskEnum.PURCHASE_TASK_STATUS_WAIT_NOTICE.getTaskTypeId())); @@ -175,48 +175,14 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { thisMonthMaxOrder = Optional.ofNullable(thisMonthMaxOrder).orElse(0); // 生成单号 TmTask tmTask = genderTaskCode(purchaseCheckInfo, thisMonthMaxOrder); - Long taskId; - - // 开启事务 - TransactionStatus transactionStatus = transactionManager.getTransaction(new DefaultTransactionDefinition()); - if (tmTaskMapper.insertTmTask(tmTask) > 0) { - taskId = tmTask.getTaskId(); - } else { - transactionManager.rollback(transactionStatus); - return AjaxResult.error("新增任务失败_task表插入0条"); - } - - // tm_task 插入成功后,再往新购验收info表中插入数据 + tmTaskMapper.insertTmTask(tmTask); + Long taskId = tmTask.getTaskId(); purchaseCheckInfo.getPurchaseCheckInfo().setTaskId(taskId); - if (purchaseCheckInfoMapper.insertPurchaseCheckInfo(purchaseCheckInfo.getPurchaseCheckInfo()) > 0) { - purchaseCheckInfo.getPurchaseCheckDetailsList().forEach( - details -> { - details.setTaskId(taskId); - details.setInputStatus("0"); - }); - // 批量插入详情数据 - boolean purchaseCheckDetailsListAddResult = purchaseCheckDetailsMapper.insertPurchaseCheckDetailsList(purchaseCheckInfo.getPurchaseCheckDetailsList()) > 0; - - // 批量插入附件列表 - List purchaseCheckDetailsList = purchaseCheckInfo.getPurchaseCheckDetailsList(); - for (PurchaseCheckDetails purchaseCheckDetails : purchaseCheckDetailsList) { - List bmFileInfos = purchaseCheckDetails.getBmFileInfos(); - if (!CollectionUtils.isEmpty(bmFileInfos)) { - bmFileInfos.stream().forEach(o -> o.setTaskId(taskId)); - bmFileInfoMapper.insertBmFileInfos(bmFileInfos); - } - } - - if (purchaseCheckDetailsListAddResult) { - transactionManager.commit(transactionStatus); - return AjaxResult.success("新增任务成功"); - } else { - transactionManager.rollback(transactionStatus); - return AjaxResult.error("新增任务失败,详情表插入0条"); - } + int count = purchaseCheckInfoMapper.insertPurchaseCheckInfo(purchaseCheckInfo.getPurchaseCheckInfo()); + if (count > 0) { + return insertPurchaseCheckDetails(purchaseCheckInfo.getPurchaseCheckDetailsList(), taskId); } else { - transactionManager.rollback(transactionStatus); - return AjaxResult.error("新增任务失败,info表插入0条"); + return AjaxResult.error("新增任务失败,purchase_check_info表插入0条"); } } catch (DataAccessException e) { return AjaxResult.error("数据库操作失败:" + e.getMessage()); @@ -225,6 +191,29 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { } } + private AjaxResult insertPurchaseCheckDetails(List purchaseCheckDetailsList, Long taskId) { + if (!CollectionUtils.isEmpty(purchaseCheckDetailsList)) { + for (PurchaseCheckDetails details : purchaseCheckDetailsList) { + details.setTaskId(taskId); + details.setInputStatus("0"); + List bmFileInfos = details.getBmFileInfos(); + if (!CollectionUtils.isEmpty(bmFileInfos)) { + bmFileInfos.stream().forEach(o -> o.setTaskId(taskId)); + bmFileInfoMapper.insertBmFileInfos(bmFileInfos); + } + } + // 批量插入详情数据 + int count = purchaseCheckDetailsMapper.insertPurchaseCheckDetailsList(purchaseCheckDetailsList); + if (count > 0) { + return AjaxResult.success("新增任务成功"); + } else { + return AjaxResult.error("新增任务失败,purchase_check_detail详情表插入0条"); + } + } else { + return AjaxResult.success("新增任务成功"); + } + } + /** * 验收通过 * @@ -306,14 +295,14 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { * @return 结果 */ @Override + @Transactional public boolean updatePurchaseCheckInfo(PurchaseCheckDto purchaseCheckDto) { purchaseCheckDto.getPurchaseCheckInfo().setUpdateTime(DateUtils.getNowDate()); purchaseCheckDto.getPurchaseCheckInfo().setUpdateBy(SecurityUtils.getUsername()); try { - List purchaseCheckDetailsList = purchaseCheckDto.getPurchaseCheckDetailsList(); - for (PurchaseCheckDetails purchaseCheckDetails : purchaseCheckDetailsList) { - purchaseCheckDetailsMapper.updatePurchaseCheckDetails(purchaseCheckDetails); - } + Long[] ids = new Long[]{purchaseCheckDto.getPurchaseCheckInfo().getId()}; + purchaseCheckDetailsMapper.deletePurchaseCheckDetailsByParentIds(ids); + insertPurchaseCheckDetails(purchaseCheckDto.getPurchaseCheckDetailsList(), purchaseCheckDto.getPurchaseCheckInfo().getTaskId()); purchaseCheckInfoMapper.updatePurchaseCheckInfo(purchaseCheckDto.getPurchaseCheckInfo()); return true; } catch (Exception e) { @@ -328,7 +317,9 @@ public class PurchaseCheckInfoServiceImpl implements IPurchaseCheckInfoService { * @return 结果 */ @Override + @Transactional public int deletePurchaseCheckInfoByIds(Long[] ids) { + purchaseCheckDetailsMapper.deletePurchaseCheckDetailsByParentIds(ids); return purchaseCheckInfoMapper.deletePurchaseCheckInfoByIds(ids); } diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/PartTypeMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/PartTypeMapper.xml index b253e837..c68f5f4f 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/PartTypeMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/PartTypeMapper.xml @@ -172,11 +172,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - SELECT DISTINCT m.pa_id AS id, m.pa_name AS paName, + m1.pa_name AS partName, + m2.pa_name As partType, m.parent_id as parentId, + m.unit_name as unitName, + m.storage_num as storageNum, + m.buy_price as buyPrice, m.LEVEL as level, m.remark as remark FROM diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/TypeMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/TypeMapper.xml index 79f672e5..3905f4a1 100644 --- a/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/TypeMapper.xml +++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/ma/TypeMapper.xml @@ -513,11 +513,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) - select type_id as typeId, parent_id as parentId, type_name as typeName, level as level from ma_type - where type_name = #{typeName} and del_flag = '0' + where type_name = #{typeName} and parent_id = #{parentId} and del_flag = '0' @@ -53,6 +56,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and purchase_time = #{purchaseTime} and arrival_time = #{arrivalTime} and purchaser = #{purchaser} + and supplier_id = #{supplierId} and tax_rate = #{taxRate} and company_id = #{companyId} @@ -70,6 +74,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" purchase_time, arrival_time, purchaser, + supplier_id, tax_rate, create_by, create_time, @@ -83,6 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{purchaseTime}, #{arrivalTime}, #{purchaser}, + #{supplierId}, #{taxRate}, #{createBy}, #{createTime}, @@ -100,6 +106,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" purchase_time = #{purchaseTime}, arrival_time = #{arrivalTime}, purchaser = #{purchaser}, + supplier_id = #{supplierId}, tax_rate = #{taxRate}, create_by = #{createBy}, create_time = #{createTime}, @@ -129,6 +136,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and pci.purchase_time = #{purchaseTime} and pci.arrival_time = #{arrivalTime} and pci.purchaser = #{purchaser} + and pci.supplier_id = #{supplierId} and pci.tax_rate = #{taxRate}