From b5a63b29313463d1c2fd1b5678a2d6b2bb8a7044 Mon Sep 17 00:00:00 2001
From: jiaosong <jiaosong6760@dingtalk.com>
Date: 星期五, 18 八月 2023 19:33:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
server/src/main/java/doumeemes/service/ext/impl/NoticesExtServiceImpl.java | 24 ++-
server/src/main/java/doumeemes/service/business/impl/WTransferServiceImpl.java | 16 ++
server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java | 5
server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java | 34 +++++
server/src/main/resources/mappers/PlansExtMapper.xml | 4
server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java | 2
server/src/main/java/doumeemes/service/ext/WorkorderRecordStandardService.java | 2
server/src/main/java/doumeemes/service/ext/WorkorderExtService.java | 2
server/src/main/resources/mappers/MaterialDistributeExtMapper.xml | 3
server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java | 55 +++++++-
server/src/main/java/doumeemes/service/ext/impl/WorkorderExtServiceImpl.java | 145 ++++++++++++++++++++++++
server/src/main/java/doumeemes/dao/ext/vo/MaterialDistributeExtListVO.java | 4
server/src/main/resources/mappers/WOutboundExtMapper.xml | 6 +
server/src/main/java/doumeemes/dao/ext/dto/QueryWorkorderExtDTO.java | 6
14 files changed, 273 insertions(+), 35 deletions(-)
diff --git a/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java b/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
index b3a6d8a..d91263c 100644
--- a/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
+++ b/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
@@ -91,7 +91,7 @@
public ApiResponse comfirmDoneStandard(@RequestBody AutoWorkReportDTO autoWorkReportDTO) {
Workorder workorder =workorderRecordStandardService.comfirmDoneNew(autoWorkReportDTO,true);
//鍙戦�佹秷鎭槦鍒楀鐞嗗垎浜搷浣�
- workorderExtService.statisticNum(workorder);
+ workorderExtService.statisticNumAsync(workorder);
return ApiResponse.success("鎿嶄綔鎴愬姛");
}
diff --git a/server/src/main/java/doumeemes/dao/ext/dto/QueryWorkorderExtDTO.java b/server/src/main/java/doumeemes/dao/ext/dto/QueryWorkorderExtDTO.java
index 4265963..07d3eb8 100644
--- a/server/src/main/java/doumeemes/dao/ext/dto/QueryWorkorderExtDTO.java
+++ b/server/src/main/java/doumeemes/dao/ext/dto/QueryWorkorderExtDTO.java
@@ -5,6 +5,8 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@@ -91,10 +93,10 @@
private Integer proGroupId;
@ApiModelProperty(value = "鍚堟牸鏁伴噺", example = "1")
- private Integer qualifiedNum;
+ private BigDecimal qualifiedNum;
@ApiModelProperty(value = "涓嶅悎鏍兼暟閲�", example = "1")
- private Integer unqualifiedNum;
+ private BigDecimal unqualifiedNum;
@ApiModelProperty(value = "妫�楠屼汉鍛樼紪鐮�", example = "1")
private Integer checkUserId;
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/MaterialDistributeExtListVO.java b/server/src/main/java/doumeemes/dao/ext/vo/MaterialDistributeExtListVO.java
index 472f306..21d9c27 100644
--- a/server/src/main/java/doumeemes/dao/ext/vo/MaterialDistributeExtListVO.java
+++ b/server/src/main/java/doumeemes/dao/ext/vo/MaterialDistributeExtListVO.java
@@ -139,4 +139,8 @@
@ApiModelProperty(value = "鍒嗙被灏忕被id")
private Integer cmodel3Id;
+ @ApiModelProperty(value = "鏄惁鏈塨om锛�0=鏃狅紱1=鏈�")
+ private Integer hasBom;
+
+
}
diff --git a/server/src/main/java/doumeemes/service/business/impl/WTransferServiceImpl.java b/server/src/main/java/doumeemes/service/business/impl/WTransferServiceImpl.java
index 7c6e23d..011621d 100644
--- a/server/src/main/java/doumeemes/service/business/impl/WTransferServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/business/impl/WTransferServiceImpl.java
@@ -469,6 +469,7 @@
throw new BusinessException(ResponseStatus.OBJECT_EMP.getCode(), "鏈煡璇㈠埌杞簱鍗曠被鍨嬩俊鎭��"+wTransfer.getType()+"銆�");
}
+
sendOutNotice(companyUser.getId(),wTransfer.getId(),wTransfer.getCode(),notices_type_transfer,Constants.getNoticeUrl(loginUserInfo.getCompany(),Constants.DINGDING_NOTICE_URL.out));
//璁板綍鎿嶄綔璁板綍
@@ -480,6 +481,7 @@
public void sendOutNotice(Integer userId ,Integer billId , String billCode ,Constants.Notices_Type_Transfer notices_type_transfer,String url){
+
//鍙戦�侀�氱煡
Notices notices = new Notices();
notices.setCompanyUserId(userId);
@@ -487,10 +489,13 @@
notices.setContent("銆�"+billCode+"銆�"+ notices_type_transfer.getContent().replace("{optType}","鍑哄簱"));
notices.setTitle(notices_type_transfer.getTitle());
notices.setObjId(billId);
- notices.setUrl(url.replace("{id}",billId.toString()));
+ if(!Objects.isNull(url)){
+ notices.setUrl(url.replace("{id}",billId.toString()));
+ }
noticesExtService.sendNotice(notices);
}
public void sendOutNotice(LoginUserInfo user,Integer userId ,Integer billId , String billCode ,Constants.Notices_Type_Transfer notices_type_transfer,String url){
+
//鍙戦�侀�氱煡
Notices notices = new Notices();
notices.setCompanyUserId(userId);
@@ -498,11 +503,14 @@
notices.setContent("銆�"+billCode+"銆�"+ notices_type_transfer.getContent().replace("{optType}","鍑哄簱"));
notices.setTitle(notices_type_transfer.getTitle());
notices.setObjId(billId);
- notices.setUrl(url.replace("{id}",billId.toString()));
+ if(!Objects.isNull(url)){
+ notices.setUrl(url.replace("{id}",billId.toString()));
+ }
noticesExtService.sendNoticeNologin(notices,user);
}
public void sendInNotice(Integer userId ,Integer billId , String billCode ,Constants.Notices_Type_Transfer notices_type_transfer,String url){
+
//鍙戦�侀�氱煡
Notices notices = new Notices();
notices.setCompanyUserId(userId);
@@ -510,7 +518,9 @@
notices.setContent("銆�"+billCode+"銆�"+ notices_type_transfer.getContent().replace("{optType}","鍏ュ簱"));
notices.setTitle(notices_type_transfer.getTitle());
notices.setObjId(billId);
- notices.setUrl(url.replace("{id}",billId.toString()));
+ if(!Objects.isNull(url)){
+ notices.setUrl(url.replace("{id}",billId.toString()));
+ }
noticesExtService.sendNotice(notices);
}
diff --git a/server/src/main/java/doumeemes/service/ext/WorkorderExtService.java b/server/src/main/java/doumeemes/service/ext/WorkorderExtService.java
index 8d8b7e2..d2bef2e 100644
--- a/server/src/main/java/doumeemes/service/ext/WorkorderExtService.java
+++ b/server/src/main/java/doumeemes/service/ext/WorkorderExtService.java
@@ -54,4 +54,6 @@
ApiResponse<Integer> dataToWtWO(String deviceIds,String inIds,LoginUserInfo userInfo);
void statisticNum(Workorder model);
+
+ void statisticNumAsync(Workorder param);
}
diff --git a/server/src/main/java/doumeemes/service/ext/WorkorderRecordStandardService.java b/server/src/main/java/doumeemes/service/ext/WorkorderRecordStandardService.java
index da60a55..13fd35d 100644
--- a/server/src/main/java/doumeemes/service/ext/WorkorderRecordStandardService.java
+++ b/server/src/main/java/doumeemes/service/ext/WorkorderRecordStandardService.java
@@ -35,7 +35,7 @@
WorkorderRecord dealWorkorderRecord(DealWorkorderRecordDTO dealWorkorderRecordDTO, LoginUserInfo loginUserInfo);
- WorkorderRecord createWorkorderRecord(CreateWorkorderRecordDTO createWorkorderRecordDTO, LoginUserInfo loginUserInfo);
+ WorkorderRecord createWorkorderRecord(CreateWorkorderRecordDTO createWorkorderRecordDTO, LoginUserInfo loginUserInfo,Integer userId);
List<WorkorderRecord> getWorkorderRecordList(Integer workorderId);
diff --git a/server/src/main/java/doumeemes/service/ext/impl/NoticesExtServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/NoticesExtServiceImpl.java
index 64df427..360d9a1 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/NoticesExtServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/NoticesExtServiceImpl.java
@@ -89,17 +89,19 @@
model.setCreateUser(user.getId());
CompanyExtListVO company = user.getCompany();
model.setDdStatus(Constants.ZERO);
- model.setUrl(model.getUrl().replace("{dbid}",model.getId()));
- if(StringUtils.isNotBlank(cu.getDdUserid())){
- try {
- String token = companyExtService.getDingdingToken(company.getId());
- JSONObject json = JSONObject.parseObject(company.getDingdingInfo());
- Long agentId = Long.parseLong(json.getString("agentid"));
- String taskId = DingDingUtil.sendActionCardNotice(token,agentId,cu.getDdUserid(),model.getUrl(),model.getTitle(),model.getContent());
- model.setDdParam(taskId);
- model.setDdStatus(Constants.ONE);
- }catch (Exception e){
- e.printStackTrace();
+ if(StringUtils.isNotBlank(model.getUrl())){
+ model.setUrl(model.getUrl().replace("{dbid}",model.getId()));
+ if(StringUtils.isNotBlank(cu.getDdUserid())){
+ try {
+ String token = companyExtService.getDingdingToken(company.getId());
+ JSONObject json = JSONObject.parseObject(company.getDingdingInfo());
+ Long agentId = Long.parseLong(json.getString("agentid"));
+ String taskId = DingDingUtil.sendActionCardNotice(token,agentId,cu.getDdUserid(),model.getUrl(),model.getTitle(),model.getContent());
+ model.setDdParam(taskId);
+ model.setDdStatus(Constants.ONE);
+ }catch (Exception e){
+ e.printStackTrace();
+ }
}
}
//鎻掑叆鏁版嵁
diff --git a/server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java
index 64c293b..ac7265f 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/PlansExtServiceImpl.java
@@ -668,9 +668,9 @@
order.setQrcodeId(barcodeParamExtService.getByType(user.getCompany().getId(),mp.getDepartId(),Constants.BARCODEPARAM_TYPE.workorder));
order.setProUserList(param.getProUserList());
order.setProGroupId(param.getProGroupId());
- //鏌ヨ鐢熶骇鐝粍鍜屼汉鍛樻槸鍚﹀悎娉�
- checkUserAndGroup(order,mp,user);
workorderExtMapper.insert(order);
+ //鏌ヨ鐢熶骇鐝粍鍜屼汉鍛樻槸鍚﹀悎娉�
+ checkUserAndGroupNew(order,mp,user);
//宸ュ崟鍘嗗彶鏁版嵁
whList.add(WorkorderExtServiceImpl.initHistoryByModel(order,user.getId(),Constants.WORKORDER_HISTORY_STATUS.create));
workorderHistoryExtMapper.insertBatch(whList);
@@ -681,6 +681,34 @@
workorderUserExtMapper.insert(wu);
}
return order;
+ }
+
+
+ private void checkUserAndGroupNew(Workorder param, PlansExtListVO model,LoginUserInfo user) throws BusinessException{
+ QueryDeviceExtDTO ud = new QueryDeviceExtDTO();
+ ud.setDeleted(Constants.ZERO);
+ ud.setId(param.getProGroupId());
+ ud.setRootDepartId(user.getRootDepartment().getId());
+ //鏌ヨ鐢ㄦ埛璁惧鍏宠仈鍏崇郴
+ DeviceExtListVO d = deviceExtMapper.selectByModel( ud );
+ if(d == null){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鐢熶骇璁惧淇℃伅涓嶆纭紝璇峰埛鏂伴〉闈㈤噸璇曪紒");
+ }
+
+ List<WorkorderUser> userList = new ArrayList<>();
+ for(Integer userId : param.getProUserList()){
+ WorkorderUser u = new WorkorderUser();
+ u.setProUserId(userId);
+ u.setPlanId(model.getId());
+ u.setCreateUser(user.getId());
+ u.setDeleted(Constants.ZERO);
+ u.setCreateTime(DateUtil.getCurrentDate());
+ u.setRootDepartId(model.getRootDepartId());
+ u.setDepartId(model.getDepartId());
+ userList.add(u);
+ }
+ param.setWorkorderUserList(userList);
+
}
private void checkUserAndGroup(Workorder param, PlansExtListVO model,LoginUserInfo user) throws BusinessException{
@@ -1638,7 +1666,7 @@
}
//宸ュ崟浜у嚭璁板綍
autoWorkReportDTO.getCreateWorkorderRecordDTO().setWorkorderId(workorder.getId());
- WorkorderRecord workorderRecord = workorderRecordStandardService.createWorkorderRecord(autoWorkReportDTO.getCreateWorkorderRecordDTO(),user);
+ WorkorderRecord workorderRecord = workorderRecordStandardService.createWorkorderRecord(autoWorkReportDTO.getCreateWorkorderRecordDTO(),user,autoWorkReportDTO.getProUserList().get(Constants.ZERO));
//宸ュ崟鎶ュ伐
workorderRecordStandardService.comfirmDone(workorder,false);
//鏇存柊宸ュ崟鐘舵��
diff --git a/server/src/main/java/doumeemes/service/ext/impl/WorkorderExtServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/WorkorderExtServiceImpl.java
index 9954f48..78cc8f8 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/WorkorderExtServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/WorkorderExtServiceImpl.java
@@ -807,12 +807,14 @@
}
if(Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.create)
||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.material)
+ ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.producing)
||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.check)
||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.done)){
//缁熻宸插垎閰嶆湭鎶ュ伐鏁伴噺
distributeNoDoneNum += Constants.formatIntegerNum(order.getPlanNum());
}
if(Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.baogong)
+ ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.producing)
|| Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.instock)){
doneNum += Constants.formatIntegerNum(order.getUnqualifiedNum()) + Constants.formatIntegerNum(order.getQualifiedNum());
int tNum =Constants.formatIntegerNum(order.getUnqualifiedNum()) + Constants.formatIntegerNum(order.getQualifiedNum());
@@ -855,7 +857,7 @@
if(!Objects.isNull(plan.getWorkPlansId())){
//鏇存柊涓昏鍗曟暟鎹俊鎭�
if(plansMapper.selectCount(new QueryWrapper<Plans>()
- .in("STATUS",0,1,4,5)
+ .eq("STATUS",Constants.PLAN_STATUS.done)
.eq("DELETED",Constants.ZERO)
.ne("id",p.getId())
.eq("WORK_PLANS_ID",plan.getWorkPlansId()))<=Constants.ZERO){
@@ -892,6 +894,147 @@
}
+
+
+ @Override
+ @Async
+ public void statisticNumAsync(Workorder param){
+ if(param.getPlanId()== null){
+ if(param.getId()== null){
+ return;
+ }
+ Workorder wModel = new Workorder();
+ wModel.setDeleted(Constants.ZERO);
+ wModel.setId(param.getId());
+ wModel = workorderExtMapper.selectOne(wModel);
+ if(wModel== null){
+ return;
+ }
+ param.setPlanId(wModel.getPlanId());
+ }
+ Plans plan = plansExtMapper.selectById(param.getPlanId());
+ if(plan == null){
+ return;
+ }
+ JSONObject json = new JSONObject();
+ QueryWorkorderExtDTO qw = new QueryWorkorderExtDTO();
+ qw.setPlanId(param.getPlanId());
+ qw.setDeleted(Constants.ZERO);
+ //鏌ヨ鍏ㄩ儴宸ュ崟鏁版嵁
+ List<WorkorderExtListVO> orderList = workorderExtMapper.selectList(qw);
+ //宸插畬宸ユ暟閲�
+ int doneNum=0;
+ //宸插垎閰嶆暟閲�
+ //宸叉姤宸ュ伐鍗曪紙鍖呮嫭宸ュ崟鐘舵�侊細宸叉姤宸ャ�佸凡鍏ュ簱锛夌殑瀹屽伐鏁伴噺锛堝寘鎷細鍚堟牸銆佷笉鑹�佹姤搴燂級
+ //+鏈姤宸ュ伐鍗曪紙鍖呮嫭宸ュ崟鐘舵�侊細宸插垱寤恒�佸凡澶囨枡銆佸凡妫�楠屻�佸凡瀹屽伐锛夌殑宸插垎閰嶆暟閲�
+ int distributNum=0;
+ //宸插垎閰嶆湭鎶ュ伐鏁伴噺=鏈姤宸ュ伐鍗曪紙宸ュ崟鐘舵�侊細宸插垱寤恒�佸凡澶囨枡銆佸凡妫�楠屻�佸凡瀹屽伐锛夌殑璁″垝鐢熶骇鏁伴噺涔嬪拰锛�
+ int distributeNoDoneNum=0;
+ //鍚堟牸鏁伴噺=宸叉姤宸ュ伐鍗曪紙宸ュ崟鐘舵�侊細宸叉姤宸ャ�佸凡鍏ュ簱锛変骇鍑轰负鍚堟牸鐨勬暟閲忎箣鍜岋紱
+ int qulifiedNum=0;
+ //涓嶈壇鏁伴噺=宸叉姤宸ュ伐鍗曪紙宸ュ崟鐘舵�侊細宸叉姤宸ャ�佸凡鍏ュ簱锛変骇鍑轰负涓嶈壇鐨勬暟閲忎箣鍜岋紱
+ int unqulifiedNum =0;
+ int allOrderNum =0;
+ if(orderList!=null && orderList.size()>0){
+ QueryWorkorderRecordExtDTO rw = new QueryWorkorderRecordExtDTO();
+ rw.setPlanId(param.getPlanId());
+ rw.setDeleted(Constants.ZERO);
+ //鏌ヨ鍏ㄩ儴宸ュ崟浜у嚭鍜屾姇鏂欐暟鎹�
+ List<WorkorderRecordExtListVO> allRecordList = workorderRecordExtMapper.selectListNew(rw);
+ for(WorkorderExtListVO order : orderList){
+ if(Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.cancel)){
+ //鍙栨秷鐨勫伐鍗曚笉绱鏁伴噺
+ continue;
+ }
+ if(Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.create)
+ ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.material)
+ ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.producing)
+ ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.check)
+ ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.done)){
+ //缁熻宸插垎閰嶆湭鎶ュ伐鏁伴噺
+ distributeNoDoneNum += Constants.formatIntegerNum(order.getPlanNum());
+ }
+ if(Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.baogong)
+ ||Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.producing)
+ || Constants.equalsInteger(order.getStatus(),Constants.WORKORDER_STATUS.instock)){
+ doneNum += Constants.formatIntegerNum(order.getUnqualifiedNum()) + Constants.formatIntegerNum(order.getQualifiedNum());
+ int tNum =Constants.formatIntegerNum(order.getUnqualifiedNum()) + Constants.formatIntegerNum(order.getQualifiedNum());
+ distributNum += tNum;
+ allOrderNum += tNum;
+ }else {
+ distributNum += Constants.formatIntegerNum(order.getPlanNum());
+ }
+
+ List<WorkorderRecordExtListVO> rList = getRecordListById(order.getId(),allRecordList);
+ if(rList!=null){
+ for(WorkorderRecordExtListVO item : rList){
+ if(Constants.equalsInteger(item.getType(),Constants.WORKORDER_RECORD_TYPE.produce)
+ && item.getOmodel()!=null
+ && (Constants.equalsInteger(item.getOmodel().getStatus() ,Constants.WORKORDER_STATUS.baogong)
+ ||Constants.equalsInteger(item.getOmodel().getStatus() ,Constants.WORKORDER_STATUS.instock))){
+ //濡傛灉鏄悎鏍间骇鍑猴紝绱鏁伴噺
+ qulifiedNum += Constants.formatBigdecimal(BigDecimal.valueOf(item.getQualifiedNum())).intValue();
+ //濡傛灉鏄笉鑹骇鍑猴紝绱鏁伴噺
+ unqulifiedNum += Constants.formatBigdecimal(BigDecimal.valueOf(item.getUnqualifiedNum())).intValue();
+ }
+ }
+ }
+ }
+ }
+ json.put(Constants.STATISTIC.distributeNoDone,distributeNoDoneNum);
+ json.put(Constants.STATISTIC.done,doneNum);
+ json.put(Constants.STATISTIC.distribute,distributNum);
+ json.put(Constants.STATISTIC.qulified,qulifiedNum);
+ json.put(Constants.STATISTIC.unqulified,unqulifiedNum);
+
+ UpdateWrapper updateWrapper = new UpdateWrapper();
+ Plans p = new Plans();
+ p.setId(param.getPlanId());
+ p.setStatisticInfo(json.toJSONString());
+ p.setUpdateTime(DateUtil.getCurrentDate());
+ if( Constants.formatIntegerNum(plan.getNum()) <= allOrderNum){
+ //濡傛灉婊¤冻璁″垝宸插畬宸ワ紝鏇存柊璁″垝鐘舵��
+ p.setStatus(Constants.PLAN_STATUS.done);
+ if(!Objects.isNull(plan.getWorkPlansId())){
+ //鏇存柊涓昏鍗曟暟鎹俊鎭�
+ if(plansMapper.selectCount(new QueryWrapper<Plans>()
+ .eq("STATUS",Constants.PLAN_STATUS.done)
+ .eq("DELETED",Constants.ZERO)
+ .ne("id",p.getId())
+ .eq("WORK_PLANS_ID",plan.getWorkPlansId()))<=Constants.ZERO){
+ WorkPlans workPlans = workPlansExtMapper.selectById(plan.getWorkPlansId());
+ if(!Objects.isNull(workPlans)){
+ workPlans.setStatus(Constants.WORKPLANHISTORY_TYPE.done);
+ workPlans.setUpdateTime(new Date());
+ workPlansExtMapper.updateById(workPlans);
+ planHistoryExtMapper.insert(initPlanHistoryByModel(workPlans,null,Constants.WORKPLANHISTORY_TYPE.done));
+ }
+ };
+ }
+ //
+ plan.getWorkPlansId();
+
+ updateWrapper.set("STATUS",p.getStatus());
+ if(Constants.equalsInteger(plan.getStatus(),Constants.PLAN_STATUS.distribute)){
+ //濡傛灉宸插垎閰�
+ planHistoryExtMapper.insertBatch(Arrays.asList(PlansExtServiceImpl.initHistoryByModel(plan,null,Constants.PLANHISTORY_TYPE.done)));
+ }
+// planHistoryService.create(PlansExtServiceImpl.initHistoryByModel(plan,null,Constants.PLANHISTORY_TYPE.done));
+ }
+ //鏇存柊缁熻淇℃伅
+// plansExtMapper.updateById(p);
+ updateWrapper.eq("ID",param.getPlanId());
+ updateWrapper.set("STATISTIC_INFO",json.toJSONString());
+ updateWrapper.set("UPDATE_TIME",DateUtil.getCurrentDate());
+ plansExtMapper.update(null,updateWrapper);
+// Workorder order = new Workorder();
+// order.setUpdateTime(DateUtil.getCurrentDate());
+// //宸插叧闂�
+// order.setId(param.getId());
+// workorderExtMapper.updateById(order);
+
+ }
+
/**
* 妫�娴嬫暟鎹湁鏁堟��
* @param param
diff --git a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
index 35e8513..4858697 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
@@ -495,6 +495,7 @@
}
if(!Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.create)
&& !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.material)
+ && !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.producing)
&& !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.check)
&& !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.done)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠姸鎬佸凡娴佽浆锛屼笉鑳借繘琛岃鎿嶄綔锛�");
@@ -532,6 +533,7 @@
}
if(!Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.create)
&& !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.material)
+ && !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.producing)
&& !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.check)
&& !Constants.equalsInteger(model.getWorkorderStatus(),Constants.WORKORDER_STATUS.done)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠姸鎬佸凡娴佽浆锛屼笉鑳借繘琛岃鎿嶄綔锛�");
@@ -835,9 +837,11 @@
if(!Constants.equalsInteger(tModel.getDoneType(),Constants.ZERO)){
//濡傛灉涓嶈壇锛岀疮璁″伐鍗曠殑涓嶈壇浜у嚭
mp.setUnqualifiedNum(Constants.formatIntegerNum(mp.getUnqualifiedNum())+(Constants.formatBigdecimal(tModel.getNum()).intValue()));
+// mp.setUnqualifiedNum(mp.getUnqualifiedNum().add(tModel.getNum()));
}else{
//濡傛灉鏄悎鏍硷紝绱宸ュ崟鐨勫悎鏍兼暟閲�
mp.setQualifiedNum(Constants.formatIntegerNum(mp.getQualifiedNum())+(Constants.formatBigdecimal(tModel.getNum()).intValue()));
+// mp.setUnqualifiedNum(mp.getQualifiedNum().add(tModel.getNum()));
}
//妫�鏌ョ绛愭槸鍚﹁浣滀负浜у嚭绡瓙锛屽鏋滄槸锛屽垯闇�瑕佸垽鏂绡瓙鏄惁鎶曟枡浣欓涓�0
Appliances curUpdateModel = getApplianceFromList(tModel.getAppliancesId(),updateApplianceList);
@@ -1582,6 +1586,7 @@
}
if(!Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.create)
&& !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.material)
+ && !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.producing)
&& !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.check)
&& !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.done)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠姸鎬佸凡娴佽浆锛屼笉鑳借繘琛岃鎿嶄綔锛�");
diff --git a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java
index 78f12c7..f408243 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordStandardServiceImpl.java
@@ -87,6 +87,8 @@
private DeviceExtMapper deviceExtMapper;
@Autowired
private UnqualifiedRecordMapper unqualifiedRecordMapper;
+ @Autowired
+ private CompanyUserExtMapper companyUserExtMapper;
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
@Override
@@ -185,6 +187,7 @@
}
if(!Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.create)
&& !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.material)
+ && !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.producing)
&& !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.check)
&& !Constants.equalsInteger(mp.getStatus(),Constants.WORKORDER_STATUS.done)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝璇ュ伐鍗曠姸鎬佸凡娴佽浆锛屼笉鑳借繘琛岃鎿嶄綔锛�");
@@ -300,7 +303,7 @@
wrModel.setType(Constants.WORKORDER_RECORD_TYPE.materail);
wrModel.setFactoryId(mp.getFactoryId());
wrModel.setProcedureId(mp.getProcedureId());
- wrModel.setBatch(mp.getBatch());
+ wrModel.setBatch(wStock.getBatch());
wrModel.setUnitId(mp.getUnitId());
wrModel.setPlanId(mp.getPlanId());
//TODO 鐩墠浣跨敤宸ヨ涓婚敭瀛樺偍璐т綅涓婚敭
@@ -519,10 +522,27 @@
if(mp== null){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝璇ヨ褰曚笉瀛樺湪锛�");
}
-
+ Plans plans = plansExtMapper.selectById(mp.getPlanId());
+ if(Objects.isNull(plans)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "瀵逛笉璧凤紝宸ュ簭璁″垝璁板綍涓嶅瓨鍦紒");
+ }
+ //鏌ヨ宸ュ簭璁″垝涓� 鎵�鏈夊伐鍗曞凡鎶ュ伐鏁伴噺
+ QueryWorkorderExtDTO dto = new QueryWorkorderExtDTO();
+ dto.setPlanId(mp.getPlanId());
+ dto.setDeleted(Constants.ZERO);
+ dto.setStatus(Constants.WORKORDER_STATUS.baogong);
+ List<WorkorderExtListVO> workorderList = workorderExtMapper.selectList(dto);
+ Integer plansQualifiedNum = 0 , plansUnQualifiedNum = 0;
+ plansQualifiedNum = workorderList.stream().map( workorderExtListVO -> workorderExtListVO.getQualifiedNum()).reduce(Constants.ZERO, Integer::sum);
+ plansUnQualifiedNum = workorderList.stream().map( workorderExtListVO -> workorderExtListVO.getUnqualifiedNum()).reduce(Constants.ZERO, Integer::sum);
+ if((BigDecimal.valueOf(plansQualifiedNum).add(BigDecimal.valueOf(plansUnQualifiedNum).add(autoWorkReportDTO.getCreateWorkorderRecordDTO().getUnQualifiedNum())
+ .add(autoWorkReportDTO.getCreateWorkorderRecordDTO().getQualifiedNum()))).compareTo(BigDecimal.valueOf(plans.getNum()))>Constants.ZERO){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鎶ュ伐鏁伴噺瓒呭嚭宸ュ簭璁″垝鎬绘暟锛�");
+ }
Workorder param = new Workorder();
param.setPlanId(mp.getPlanId());
+ param.setId(autoWorkReportDTO.getCreateWorkorderRecordDTO().getWorkorderId());
if(Constants.equalsInteger(mp.getPaused(),Constants.ONE)){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝宸ュ崟宸叉殏鍋滐紒");
}
@@ -541,13 +561,13 @@
List<Appliances> updateApplianceProList = new ArrayList<>();
//寰呮洿鏂板簱瀛橀泦鍚�
List<WStock> stockList = new ArrayList<>();
+ //澶勭悊浜у嚭鏁版嵁
+ WorkorderRecord workorderRecord = this.createWorkorderRecord(autoWorkReportDTO.getCreateWorkorderRecordDTO(),user,null);
//鏌ヨ鎶曟枡鍜屾姤宸ヨ褰曞垪琛�
List<WorkorderRecordExtListVO> allRecordList = workorderRecordExtMapper.selectAllList(getQueryRecordParam(param));
if(Objects.isNull(allRecordList)||allRecordList.size()==Constants.ZERO){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈煡璇㈡姇鏂欏拰鎶ュ伐璁板綍!");
}
- //澶勭悊浜у嚭鏁版嵁
- WorkorderRecord workorderRecord = this.createWorkorderRecord(autoWorkReportDTO.getCreateWorkorderRecordDTO(),user);
//妫�鏌ユ暟鎹俊鎭�
// caculateCheckRecord(user, mp,allRecordList);
QueryBomDetailExtDTO bdparam = initBomParam(user,mp);
@@ -572,6 +592,8 @@
}
}
//鏇存柊宸ュ崟鐘舵�佷负宸叉姤宸�
+ mp.setUnqualifiedNum(autoWorkReportDTO.getCreateWorkorderRecordDTO().getUnQualifiedNum().intValue());
+ mp.setQualifiedNum(autoWorkReportDTO.getCreateWorkorderRecordDTO().getQualifiedNum().intValue());
updateOrderInfo(user,mp,Constants.WORKORDER_HISTORY_STATUS.baogong);
//鎵归噺鎻掑叆鍑哄叆搴撴槑缁嗚褰�
@@ -1120,7 +1142,7 @@
//濡傛灉鏄骇鍑�
mp.setHasProduceNum(Constants.formatBigdecimal(tModel.getNum()).intValue()+Constants.formatIntegerNum(mp.getHasProduceNum()));
//浜у嚭鍚堟牸
- this.createOutDetail(user,outbound,mp,tModel,Constants.ZERO,detailList,stockList);
+ this.createOutDetail(user,outbound,mp,tModel,Constants.ZERO,detailList,stockList);
//浜у嚭涓嶈壇
this.createOutDetail(user,outbound,mp,tModel,Constants.ONE,detailList,stockList);
}
@@ -1154,6 +1176,9 @@
detail.setWarehouseId(outbound.getWarehouseId());
detail.setLocationId(mp.getFinishWarehouseLocationId());
detail.setNum(BigDecimal.valueOf(doneType.equals(Constants.ZERO)?tModel.getQualifiedNum():tModel.getUnqualifiedNum()));
+ if(detail.getNum().compareTo(BigDecimal.ZERO)==Constants.ZERO){
+ return;
+ }
detail.setStatus(Constants.ONE);
detail.setDoneNum(detail.getNum());
detail.setDoneDate(new Date());
@@ -1472,7 +1497,7 @@
@Override
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
- public WorkorderRecord createWorkorderRecord(CreateWorkorderRecordDTO createWorkorderRecordDTO, LoginUserInfo loginUserInfo){
+ public WorkorderRecord createWorkorderRecord(CreateWorkorderRecordDTO createWorkorderRecordDTO, LoginUserInfo loginUserInfo ,Integer userId){
Workorder workorder = workorderExtMapper.selectById(createWorkorderRecordDTO.getWorkorderId());
if(Objects.isNull(workorder)){
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏈煡璇㈠埌璇ュ伐鍗曚俊鎭紒");
@@ -1501,11 +1526,21 @@
//鏁版嵁瀛樺偍
workorderRecord = new WorkorderRecord();
workorderRecord.setDeleted(Constants.ZERO);
- workorderRecord.setCreateUser(loginUserInfo.getId());
+ if(!Objects.isNull(userId)){
+ CompanyUser companyUser = companyUserExtMapper.selectById(userId);
+ if(Objects.isNull(companyUser)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鏈煡璇㈠埌鐢熶骇浜哄憳瀵瑰簲浼佷笟鐢ㄦ埛淇℃伅锛�");
+ }
+ workorderRecord.setCreateUser(companyUser.getUserId());
+ workorderRecord.setRootDepartId(companyUser.getRootDepartId());
+ workorderRecord.setDepartId(companyUser.getComDepartId());
+ }else{
+ workorderRecord.setCreateUser(loginUserInfo.getId());
+ workorderRecord.setRootDepartId(loginUserInfo.getRootDepartment().getId());
+ workorderRecord.setDepartId(loginUserInfo.getCurComDepartment().getId());
+ }
workorderRecord.setCreateTime(new Date());
workorderRecord.setNum(num);
- workorderRecord.setRootDepartId(loginUserInfo.getRootDepartment().getId());
- workorderRecord.setDepartId(loginUserInfo.getCurComDepartment().getId());
workorderRecord.setPlanId(workorder.getPlanId());
workorderRecord.setWorkorderId(createWorkorderRecordDTO.getWorkorderId());
workorderRecord.setBatch(workorder.getBatch());
@@ -1521,7 +1556,7 @@
//璁$畻宸ヨ祫淇℃伅
SalaryParam salaryParam = salaryParamMapper.selectOne(new QueryWrapper<SalaryParam>().eq("DELETED",Constants.ZERO).eq("MATERIAL_ID",workorderRecord.getMaterialId())
.eq("DEPART_ID",workorderRecord.getFactoryId()).eq("PROCEDURE_ID",workorderRecord.getProcedureId()).last(" limit 1 "));
- if(!Objects.isNull(salaryParam)){
+ if(!Objects.isNull(salaryParam)&&!Objects.isNull(createWorkorderRecordDTO.getDuration())){
workorderRecord.setSalaryPrice(salaryParam.getSalary());
workorderRecord.setSalaryType(salaryParam.getType());
workorderRecord.setSalaryUnqualified(salaryParam.getUnqualified());
diff --git a/server/src/main/resources/mappers/MaterialDistributeExtMapper.xml b/server/src/main/resources/mappers/MaterialDistributeExtMapper.xml
index 31c73ce..58d867a 100644
--- a/server/src/main/resources/mappers/MaterialDistributeExtMapper.xml
+++ b/server/src/main/resources/mappers/MaterialDistributeExtMapper.xml
@@ -717,7 +717,8 @@
mmodel.UNION_NAME as MMODEL_UNION_NAME,
mmodel.code as MMODEL_CODE,
umodel.name as UMODEL_NAME,
- umodel.ATTRIBUTE_DATA as UMODEL_ATTRIBUTE_DATA
+ umodel.ATTRIBUTE_DATA as UMODEL_ATTRIBUTE_DATA,
+ (select count(1) from bom b where a.id = b.MATERIAL_ID and b.`STATUS` = 1 and b.DELETED = 0 ) as hasBom
FROM `material_distribute` `a`
LEFT JOIN `material` `mmodel` ON a.MATERIAL_ID=mmodel.ID
diff --git a/server/src/main/resources/mappers/PlansExtMapper.xml b/server/src/main/resources/mappers/PlansExtMapper.xml
index df7ce24..f2dd8e4 100644
--- a/server/src/main/resources/mappers/PlansExtMapper.xml
+++ b/server/src/main/resources/mappers/PlansExtMapper.xml
@@ -389,13 +389,13 @@
`usermodel`.`SYSTEMID` AS USERMODEL_SYSTEMID,
`usermodel`.`INVALID_TIME` AS USERMODEL_INVALID_TIME,
`usermodel`.`TYPE` AS USERMODEL_TYPE
- , ifnull(( SELECT sum( b.PLAN_NUM ) FROM workorder b WHERE b.deleted = 0 AND b.PLAN_ID = a.id and b.status !=6),0) AS workorderDistributNum ,
+ , ifnull(( SELECT sum( b.UNQUALIFIED_NUM + QUALIFIED_NUM ) FROM workorder b WHERE b.deleted = 0 AND b.PLAN_ID = a.id and b.status = 4 ),0) AS workorderDistributNum ,
`mmodel`.name as materialName , `mmodel`.code as materialCode ,`fmodel`.name as factoryName , `pmodel`.name as produceName ,
concat(`usermodel`.realname,' ',`usermodel`.mobile) as planUserName , `umodel`.name as unitName ,
w.PLAN_CODE as workPlanCode , w.SALESORDER as salesOrder ,
w.START_DATE as workPlanStartDate , w.PLAN_DATE as workPlanEndDate,
w.`PLAN_DATE` as workPlanPlanDate,
- ifnull((select sum(worder.PLAN_NUM) from workorder worder where worder.PLAN_ID = a.id and worder.STATUS not in (7,8) ),0) as produceNum
+ ifnull((select sum(worder.UNQUALIFIED_NUM + worder.QUALIFIED_NUM ) from workorder worder where worder.PLAN_ID = a.id and worder.STATUS = 4 ),0) as produceNum
FROM `plans` `a`
LEFT JOIN `department` `dmodel` ON a.DEPART_ID=dmodel.ID
LEFT JOIN `material_distribute` `mdmodel` ON a.MATERIAL_ID=mdmodel.ID
diff --git a/server/src/main/resources/mappers/WOutboundExtMapper.xml b/server/src/main/resources/mappers/WOutboundExtMapper.xml
index 8abffc5..f7b115d 100644
--- a/server/src/main/resources/mappers/WOutboundExtMapper.xml
+++ b/server/src/main/resources/mappers/WOutboundExtMapper.xml
@@ -561,6 +561,12 @@
<if test="endDate != null and endDate != '' ">
AND CONCAT(#{endDate},' 23:59:59') >= `w`.`VALID_DATE`
</if>
+ <if test="rootDepartId != null">
+ AND `w`.`ROOT_DEPART_ID` = #{rootDepartId}
+ </if>
+ <if test="departId != null">
+ AND `w`.`DEPART_ID` = #{departId}
+ </if>
</where>
group by SUBSTR(w.VALID_DATE,1,10) , m.`CODE` ,m.`NAME` , wd.BATCH , p.`NAME` , wd.QUALITY_TYPE , wh.`NAME` , w.`CODE` ,u.`NAME` ,w.CREATE_TIME , w.ORIGIN_TYPE,w.ORIGIN_CODE, w.type , w.BILL_TYPE
order by w.VALID_DATE desc, w.CREATE_TIME desc
--
Gitblit v1.9.3