|
|
@@ -105,11 +105,6 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
docBaseDTO = generateMsgObj(make.getId(), make.getMa_code());
|
|
|
messageLogService.save(docBaseDTO);
|
|
|
|
|
|
-
|
|
|
- //抓取出库单位成本,计算出库成本
|
|
|
- calcMakePriceAndTotal(make.getId());
|
|
|
-
|
|
|
-
|
|
|
}else{
|
|
|
//更新主表
|
|
|
make.setUpdaterId(BaseContextHolder.getUserId());
|
|
|
@@ -147,17 +142,10 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
docBaseDTO = generateMsgObj(make.getId(), make.getMa_code());
|
|
|
messageLogService.update(docBaseDTO);
|
|
|
|
|
|
- //抓取出库单位成本,计算出库成本
|
|
|
- calcMakePriceAndTotal(make.getId());
|
|
|
-
|
|
|
}
|
|
|
return docBaseDTO;
|
|
|
}
|
|
|
|
|
|
- private void calcMakePriceAndTotal(Long id) {
|
|
|
- getMapper().calcMakePriceAndTotal(id);
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
/**
|
|
|
* 校验库存是否足够
|
|
|
@@ -171,8 +159,11 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
int i = 0;
|
|
|
for(MakeMaterial makeMaterial : makeMaterialList){
|
|
|
i++;
|
|
|
- double qty = makeMaterial.getMm_qty();
|
|
|
- double onHand = getMapper().getOnHand(makeMaterial.getMm_prodcode(),makeMaterial.getMm_whcode(), BaseContextHolder.getCompanyId());
|
|
|
+ double qty = makeMaterial.getMm_qty()==null?0:makeMaterial.getMm_qty();
|
|
|
+ Double onHand = getMapper().getOnHand(makeMaterial.getMm_prodcode(),makeMaterial.getMm_whcode(), BaseContextHolder.getCompanyId());
|
|
|
+ if (onHand==null){
|
|
|
+ onHand=0d;
|
|
|
+ }
|
|
|
if(onHand < qty){
|
|
|
throw new BizException(79402, "行" + i + "库存不足");
|
|
|
}
|
|
|
@@ -265,22 +256,21 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
DocBaseDTO docBaseDTO = saveOrUpdate(makeListDTO);
|
|
|
make.setId(docBaseDTO.getId());
|
|
|
}
|
|
|
- //抓取出库单位成本,计算出库成本
|
|
|
- calcMakePriceAndTotal(make.getId());
|
|
|
-
|
|
|
//2.校验库存是否足够
|
|
|
validStorage(makeListDTO);
|
|
|
//3.生成 完工入库单和领料单 并 过账
|
|
|
generateProdIO(makeListDTO);
|
|
|
+
|
|
|
//4.修改单据状态
|
|
|
Make updateMake = new Make();
|
|
|
+ updateMake.setId(make.getId());
|
|
|
updateMake.setMa_status(Status.AUDITED.getDisplay());
|
|
|
updateMake.setMa_statuscode(Status.AUDITED.name());
|
|
|
updateMake.setUpdateTime(new Date());
|
|
|
updateMake.setUpdaterId(BaseContextHolder.getUserId());
|
|
|
updateMake.setMa_auditman("");
|
|
|
updateMake.setMa_auditdate(new Date());
|
|
|
- getMapper().updateByPrimaryKeySelective(make);
|
|
|
+ getMapper().updateByPrimaryKeySelective(updateMake);
|
|
|
DocBaseDTO docBaseDTO = generateMsgObj(make.getId(), make.getMa_code());
|
|
|
//5.记录LOG
|
|
|
messageLogService.audit(docBaseDTO);
|
|
|
@@ -292,9 +282,12 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
* 2.过账
|
|
|
* @param makeListDTO
|
|
|
*/
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
private void generateProdIO(MakeListDTO makeListDTO) {
|
|
|
Make make = makeListDTO.getMain();
|
|
|
+ Long ma_id = make.getId();
|
|
|
List<MakeMaterial> items = makeListDTO.getItems();
|
|
|
+
|
|
|
if ("组装".equals(make.getMa_type())){
|
|
|
/** 1.生产领料单 **/
|
|
|
//a.主表
|
|
|
@@ -303,7 +296,6 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
String code = maxnumberService.getMaxnumber("MakeOut", true).getData();
|
|
|
prodInOut.setPi_inoutno(code);
|
|
|
prodInOut.setPi_date(new Date()); //出入库日期
|
|
|
- //prodInOut.setPi_total(make.getMa_price());
|
|
|
prodInOut.setPi_recordmanid(BaseContextHolder.getUserId()); //录入人ID
|
|
|
prodInOut.setPi_recorddate(new Date()); //录入日期
|
|
|
prodInOut.setPi_auditdate(new Date()); //审核日期
|
|
|
@@ -353,6 +345,10 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
if (!StringUtils.isEmpty(map.get("result"))){
|
|
|
throw new BizException(76201, map.get("result").toString());
|
|
|
}
|
|
|
+
|
|
|
+ //重新获取更新后的工单
|
|
|
+ make = getMapper().selectByPrimaryKey(ma_id);
|
|
|
+
|
|
|
/** 2.完工入库单 **/
|
|
|
//a.主表
|
|
|
prodInOut = new ProdInOut();
|
|
|
@@ -360,7 +356,6 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
code = maxnumberService.getMaxnumber("MakeIn", true).getData();
|
|
|
prodInOut.setPi_inoutno(code);
|
|
|
prodInOut.setPi_date(new Date()); //出入库日期
|
|
|
- //prodInOut.setPi_total(make.getMa_price());
|
|
|
prodInOut.setPi_recordmanid(BaseContextHolder.getUserId()); //录入人ID
|
|
|
prodInOut.setPi_recorddate(new Date()); //录入日期
|
|
|
prodInOut.setPi_auditdate(new Date()); //审核日期
|
|
|
@@ -371,6 +366,7 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
prodInOut.setCompanyId(BaseContextHolder.getCompanyId()); //公司ID
|
|
|
prodInOut.setCreateTime(new Date());
|
|
|
prodInOut.setCreatorId(BaseContextHolder.getUserId()); //创建人ID
|
|
|
+ prodInOut.setPi_total(make.getMa_total());
|
|
|
prodInOutMapper.insertSelective(prodInOut);
|
|
|
pi_id = prodInOut.getId();
|
|
|
//b.从表
|
|
|
@@ -403,10 +399,10 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
throw new BizException(76201, map.get("result").toString());
|
|
|
}
|
|
|
}else if ("拆件".equals(make.getMa_type())){
|
|
|
- /** 1.生产领料单 **/
|
|
|
+ /** 1.拆件领料单 **/
|
|
|
//a.主表
|
|
|
ProdInOut prodInOut = new ProdInOut();
|
|
|
- prodInOut.setPi_class("生产领料单");
|
|
|
+ prodInOut.setPi_class("拆件领料单");
|
|
|
String code = maxnumberService.getMaxnumber("MakeOut", true).getData();
|
|
|
prodInOut.setPi_inoutno(code);
|
|
|
prodInOut.setPi_date(new Date()); //出入库日期
|
|
|
@@ -434,8 +430,8 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
prodIODetail.setPd_prodid(make.getMa_prodid()); //物料ID
|
|
|
prodIODetail.setPd_prodcode(make.getMa_prodcode()); //物料CODE
|
|
|
prodIODetail.setPd_outqty(make.getMa_qty()); //出库数
|
|
|
- prodIODetail.setPd_price(make.getMa_price()); //成本单价 ???
|
|
|
- prodIODetail.setPd_total(make.getMa_total()); //金额
|
|
|
+ prodIODetail.setPd_price(new Double(0)); //成本单价 ???
|
|
|
+ prodIODetail.setPd_total(new Double(0)); //金额
|
|
|
prodIODetail.setPd_whid(make.getMa_whid()); //仓库ID
|
|
|
prodIODetail.setPd_whcode(make.getMa_whcode()); //仓库CODE
|
|
|
prodIODetail.setPd_whname(make.getMa_whname()); //仓库名称
|
|
|
@@ -446,7 +442,7 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
//c.领料单过账
|
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
|
map.put("inoutNo", code);
|
|
|
- map.put("class", "生产领料单");
|
|
|
+ map.put("class", "拆件领料单");
|
|
|
map.put("commitid", BaseContextHolder.getUserId());
|
|
|
map.put("companyId", BaseContextHolder.getCompanyId());
|
|
|
map.put("result", null);
|
|
|
@@ -454,6 +450,14 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
if (!StringUtils.isEmpty(map.get("result"))){
|
|
|
throw new BizException(76201, map.get("result").toString());
|
|
|
}
|
|
|
+
|
|
|
+ //重新获取更新后的工单
|
|
|
+ //合计工单明细
|
|
|
+ makeMaterialMapper.calcdetailtotal(ma_id);
|
|
|
+ make = getMapper().selectByPrimaryKey(ma_id);
|
|
|
+ items = makeMaterialMapper.selectByFK(ma_id,BaseContextHolder.getCompanyId());
|
|
|
+
|
|
|
+
|
|
|
/** 2.完工入库单 **/
|
|
|
//a.主表
|
|
|
prodInOut = new ProdInOut();
|
|
|
@@ -461,7 +465,6 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
code = maxnumberService.getMaxnumber("MakeIn", true).getData();
|
|
|
prodInOut.setPi_inoutno(code);
|
|
|
prodInOut.setPi_date(new Date()); //出入库日期
|
|
|
- //prodInOut.setPi_total(make.getMa_price());
|
|
|
prodInOut.setPi_recordmanid(BaseContextHolder.getUserId()); //录入人ID
|
|
|
prodInOut.setPi_recorddate(new Date()); //录入日期
|
|
|
prodInOut.setPi_auditdate(new Date()); //审核日期
|
|
|
@@ -474,6 +477,8 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
prodInOut.setCreatorId(BaseContextHolder.getUserId()); //创建人ID
|
|
|
prodInOutMapper.insertSelective(prodInOut);
|
|
|
pi_id = prodInOut.getId();
|
|
|
+ //计算完工入库单主表金额
|
|
|
+ prodIODetailMapper.calcProdIn(pi_id);
|
|
|
//b.从表
|
|
|
List<ProdIODetail> prodIODetailList = new ArrayList<ProdIODetail>();
|
|
|
int detno = 0;
|
|
|
@@ -526,11 +531,12 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
selectProdIO(make);
|
|
|
//5.修改单据状态
|
|
|
Make updateMake = new Make();
|
|
|
- make.setMa_status(Status.UNAUDITED.getDisplay());
|
|
|
- make.setMa_statuscode(Status.UNAUDITED.name());
|
|
|
- make.setUpdateTime(new Date());
|
|
|
- make.setUpdaterId(BaseContextHolder.getUserId());
|
|
|
- getMapper().updateByPrimaryKeySelective(make);
|
|
|
+ updateMake.setId(make.getId());
|
|
|
+ updateMake.setMa_status(Status.UNAUDITED.getDisplay());
|
|
|
+ updateMake.setMa_statuscode(Status.UNAUDITED.name());
|
|
|
+ updateMake.setUpdateTime(new Date());
|
|
|
+ updateMake.setUpdaterId(BaseContextHolder.getUserId());
|
|
|
+ getMapper().updateByPrimaryKeySelective(updateMake);
|
|
|
DocBaseDTO docBaseDTO = generateMsgObj(id, make.getMa_code());
|
|
|
//6.记录LOG
|
|
|
messageLogService.unAudit(docBaseDTO);
|
|
|
@@ -580,11 +586,18 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
* 2.反过账
|
|
|
* @param make
|
|
|
*/
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
private void selectProdIO(Make make) {
|
|
|
String code = make.getMa_code();
|
|
|
+ String type = make.getMa_type();
|
|
|
+ String outCode="";
|
|
|
Long companyId = BaseContextHolder.getCompanyId();
|
|
|
String inCode = getMapper().selectMakeInOutCode(code, companyId, "完工入库单");
|
|
|
- String outCode = getMapper().selectMakeInOutCode(code, companyId, "生产领料单");
|
|
|
+ if ("拆件".equals(type)){
|
|
|
+ outCode = getMapper().selectMakeInOutCode(code, companyId, "拆件领料单");
|
|
|
+ }else if ("组装".equals(type)){
|
|
|
+ outCode = getMapper().selectMakeInOutCode(code, companyId, "生产领料单");
|
|
|
+ }
|
|
|
Map<String, Object> map = new HashMap<String, Object>();
|
|
|
map.put("inoutNo", inCode);
|
|
|
map.put("class", "完工入库单");
|
|
|
@@ -599,15 +612,25 @@ public class MakeServiceImpl extends CommonBaseServiceImpl<MakeMapper, Make> imp
|
|
|
prodInOutMapper.deleteByInOutNo(inCode, "完工入库单", BaseContextHolder.getCompanyId());
|
|
|
prodIODetailMapper.deleteByInOutNo(inCode, "完工入库单", BaseContextHolder.getCompanyId());
|
|
|
|
|
|
+ if ("拆件".equals(type)){
|
|
|
+ map.put("class", "拆件领料单");
|
|
|
+ }else if ("组装".equals(type)){
|
|
|
+ map.put("class", "生产领料单");
|
|
|
+ }
|
|
|
map.put("inoutNo", outCode);
|
|
|
- map.put("class", "生产领料单");
|
|
|
- //生产领料单反过账
|
|
|
+ map.put("result", null);
|
|
|
+ //生产领料单/拆件领料反过账
|
|
|
prodInOutMapper.unPost(map);
|
|
|
if(!StringUtils.isEmpty(map.get("result"))){
|
|
|
throw new BizException(76204, map.get("result").toString());
|
|
|
}
|
|
|
- prodInOutMapper.deleteByInOutNo(outCode, "生产领料单", BaseContextHolder.getCompanyId());
|
|
|
- prodIODetailMapper.deleteByInOutNo(outCode, "生产领料单", BaseContextHolder.getCompanyId());
|
|
|
+ if ("拆件".equals(type)){
|
|
|
+ prodInOutMapper.deleteByInOutNo(outCode, "拆件领料单", BaseContextHolder.getCompanyId());
|
|
|
+ prodIODetailMapper.deleteByInOutNo(outCode, "拆件领料单", BaseContextHolder.getCompanyId());
|
|
|
+ }else if ("组装".equals(type)){
|
|
|
+ prodInOutMapper.deleteByInOutNo(outCode, "生产领料单", BaseContextHolder.getCompanyId());
|
|
|
+ prodIODetailMapper.deleteByInOutNo(outCode, "生产领料单", BaseContextHolder.getCompanyId());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|