| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.vincent.rsf.framework.common.R; |
| | | import com.vincent.rsf.framework.exception.CoolException; |
| | | import com.vincent.rsf.server.manager.enums.OrderSourceType; |
| | | import com.vincent.rsf.server.manager.enums.OrderType; |
| | | import com.vincent.rsf.server.manager.enums.OrderWorkType; |
| | | import com.vincent.rsf.server.common.utils.ExcelUtil; |
| | | import com.vincent.rsf.server.manager.entity.Companys; |
| | | import com.vincent.rsf.server.manager.entity.Matnr; |
| | | import com.vincent.rsf.server.manager.entity.Purchase; |
| | | import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate; |
| | | import com.vincent.rsf.server.manager.entity.excel.PurchaseTemplate; |
| | | import com.vincent.rsf.server.manager.enums.CompanysType; |
| | | import com.vincent.rsf.server.manager.mapper.PurchaseItemMapper; |
| | | import com.vincent.rsf.server.manager.entity.PurchaseItem; |
| | | import com.vincent.rsf.server.manager.service.CompanysService; |
| | | import com.vincent.rsf.server.manager.service.MatnrService; |
| | | import com.vincent.rsf.server.manager.service.PurchaseItemService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.vincent.rsf.server.manager.service.PurchaseService; |
| | | import com.vincent.rsf.server.system.constant.SerialRuleCode; |
| | | import com.vincent.rsf.server.system.utils.SerialRuleUtils; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service("purchaseItemService") |
| | | public class PurchaseItemServiceImpl extends ServiceImpl<PurchaseItemMapper, PurchaseItem> implements PurchaseItemService { |
| | | |
| | | private final PurchaseServiceImpl purchaseService; |
| | | @Autowired |
| | | private PurchaseService purchaseService; |
| | | |
| | | public PurchaseItemServiceImpl(PurchaseServiceImpl purchaseService) { |
| | | this.purchaseService = purchaseService; |
| | | } |
| | | @Autowired |
| | | private MatnrService matnrService; |
| | | |
| | | @Autowired |
| | | private CompanysService companysService; |
| | | |
| | | /** |
| | | * @author Ryan |
| | |
| | | * @version 1.0 |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R excelImport(MultipartFile file, Long loginUserId) throws Exception { |
| | | ExcelImportResult result = ExcelImportUtil.importExcelMore(file.getInputStream(), PurchaseTemplate.class, ExcelUtil.getDefaultImportParams()); |
| | | if (result.getList().isEmpty()) { |
| | |
| | | List<PurchaseTemplate> list = listMap.get(key); |
| | | Purchase serviceOne = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getCode, key)); |
| | | if (!Objects.isNull(serviceOne)) { |
| | | continue; |
| | | // return R.error(serviceOne.getCode() + "单据已存在!!"); |
| | | throw new CoolException(serviceOne.getCode() + "单据已存在!!"); |
| | | } |
| | | PurchaseTemplate template = list.stream().findFirst().get(); |
| | | Purchase purchase = new Purchase(); |
| | | purchase.setCode(template.getPoCode()).set; |
| | | SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); |
| | | Date date = dateFormat.parse(template.getArrTime()); |
| | | BeanUtils.copyProperties(template, purchase); |
| | | purchase.setCode(template.getPoCode()); |
| | | if (StringUtils.isBlank(template.getPoCode())) { |
| | | String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_ORDER_PO_CODE, purchase); |
| | | purchase.setCode(ruleCode); |
| | | } |
| | | purchase.setType(OrderType.getTypeVal(template.getType())) |
| | | .setWkType(OrderWorkType.getWorkType(template.getWkType())) |
| | | .setSource(OrderSourceType.ORDER_SOURCE_TYPE_EXCEL.desc) |
| | | .setPreArr(date) |
| | | .setCreateBy(loginUserId) |
| | | .setUpdateBy(loginUserId); |
| | | if (!purchaseService.save(purchase)) { |
| | | throw new CoolException("主单保存失败!!"); |
| | | } |
| | | List<PurchaseItem> items = new ArrayList<>(); |
| | | for (PurchaseTemplate purchaseTemplate : list) { |
| | | PurchaseItem item = new PurchaseItem(); |
| | | if (StringUtils.isBlank(purchaseTemplate.getMatnrCode())) { |
| | | throw new CoolException(purchaseTemplate.getPoCode() + ":物料编码不能为空!!"); |
| | | } |
| | | Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, template.getMatnrCode())); |
| | | if (Objects.isNull(matnr)) { |
| | | throw new CoolException(template.getMatnrCode() + "物料不存在!!"); |
| | | } |
| | | item.setMatnrName(matnr.getName()) |
| | | .setMatnrCode(matnr.getCode()) |
| | | .setPlatItemId(template.getPlatItemId()) |
| | | .setAnfme(template.getAnfme()) |
| | | .setPurchaseId(purchase.getId()) |
| | | .setUnit(matnr.getUnit()) |
| | | .setNromQty(matnr.getNromNum()) |
| | | .setSplrBatch(template.getSplrBatch()) |
| | | .setCreateBy(loginUserId) |
| | | .setUpdateBy(loginUserId); |
| | | |
| | | if (StringUtils.isNotBlank(purchaseTemplate.getSplrCode())) { |
| | | Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>() |
| | | .eq(Companys::getType, CompanysType.COMPANYS_TYPE_SUPPLIER.val) |
| | | .eq(Companys::getCode, template.getSplrCode())); |
| | | if (!Objects.isNull(companys)) { |
| | | item.setSplrCode(companys.getCode()).setSplrName(companys.getName()); |
| | | } else { |
| | | throw new CoolException("供应商:" + template.getSplrName() + "不存在!!"); |
| | | } |
| | | } else { |
| | | throw new CoolException("供应商不能为空!!"); |
| | | } |
| | | if (!this.save(item)) { |
| | | throw new CoolException("单据明细保存失败!!"); |
| | | } |
| | | items.add(item); |
| | | } |
| | | |
| | | double anfmes = items.stream().mapToDouble(PurchaseItem::getAnfme).sum(); |
| | | purchase.setAnfme(anfmes); |
| | | |
| | | if (!purchaseService.updateById(purchase)) { |
| | | throw new CoolException("主单数量修改失败!!"); |
| | | } |
| | | } |
| | | return null; |
| | | return R.ok("导入成功!!"); |
| | | } |
| | | } |